package com.lqian.demo02.part5.service;

import com.lqian.demo02.part5.dao.UserDao;
import com.lqian.demo02.part5.dao.UserDaoImpl;
import com.lqian.demo02.part5.pojo.User;
import com.lqian.demo02.part5.utils.JdbcUtils2;
import com.lqian.demo02.utils.DruidPool;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
 * service层捕获异常，进行事务处理
 *  事务处理：调用不同dao的多个方法，必须使用同一个connection（connection作为参数传递）
 *  事务完成之后，需要在service层进行connection的关闭，在dao层关闭（PreparedStatement和ResultSet对象）
 * @author：Melody_LQ
 * @time：2022/7/14 6:21 下午
 */
public class UserServiceImpl2 implements UserService{

    private UserDao userDao;

    public UserServiceImpl2(){
        userDao = new UserDaoImpl();
    }

    @Override
    public boolean addUser(User user) {
        boolean flag = false;
        try {
            //开启事务
            JdbcUtils2.startTransaction();
            int i = 1/0;
            int resultRows = userDao.addUser(user);
            if (resultRows>0){
                //SQL正常执行之后提交事务
                JdbcUtils2.commit();
                flag = true;
            }
        } catch (SQLException e) {
            //出现异常之后就回滚事务
            JdbcUtils2.rollback();
            flag = false;
            e.printStackTrace();
        }finally {
            JdbcUtils2.close();
        }
        return flag;
    }

    @Override
    public int updateUser(User user, int id) {
        return 0;
    }

    @Override
    public int delUserById(int id) {
        return 0;
    }

    @Override
    public User selectUserById(int id) {
        return null;
    }

    @Override
    public List<User> selectAllUsers() {
        return null;
    }
}
